#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str1 = "45";
    string str2 = "3.14159";
    string str3 = "9527 with words";
    string str4 = "words and 2";
/*
如果字符串中所有字符都是数值类型，整个字符串会被转换为对应的数值，并通过返回值返回
如果字符串的前半部分字符是数值类型，后半部不是，那么前半部分会被转换为对应的数值，并通过返回值返回
如果字符第一个字符不是数值类型转换失败
*/
    int myint1 = std::stoi(str1);
    float myint2 = std::stof(str2);
    int myint3 = std::stoi(str3);
    // 错误： 'std::invalid_argument'
    //int myint4 = std::stoi(str4); //
 /*
 terminate called after throwing an instance of 'std::invalid_argument'
  what():  stoi
  已放弃 (核心已转储)
 */

    cout << "std::stoi(\"" << str1 << "\") is " << myint1 << endl;
    cout << "std::stof(\"" << str2 << "\") is " << myint2 << endl;
    cout << "std::stoi(\"" << str3 << "\") is " << myint3 << endl;
    // cout << "std::stoi(\"" << str4 << "\") is " << myint4 << endl;
}


/* 作者: 苏丙榅
链接: https://subingwen.cn/cpp/convert/
来源: 爱编程的大丙
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。 */